<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>分片预分配 | Elasticsearch: 权威指南 | Elastic</title>
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
</head>
<body>
<div class="main-container">
    <section id="content">
        
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原文地址: <a href="https://www.elastic.co/guide/cn/elasticsearch/guide/current/overallocation.html" rel="nofollow">https://www.elastic.co/guide/cn/elasticsearch/guide/current/overallocation.html</a>, 版权归 www.elastic.co 所有<br/>
                            英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/overallocation.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/guide/current/overallocation.html</a>
                            </div>
                        <!-- start body -->
                  <div class="page_header">
<b>请注意:</b><br>本书基于 Elasticsearch 2.x 版本，有些内容可能已经过时。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: 权威指南</a></span>
»
<span class="breadcrumb-link"><a href="modeling-your-data.html">数据建模</a></span>
»
<span class="breadcrumb-link"><a href="scale.html">扩容设计</a></span>
»
<span class="breadcrumb-node">分片预分配</span>
</div>
<div class="navheader">
<span class="prev">
<a href="shard-scale.html">« 扩容的单元</a>
</span>
<span class="next">
<a href="kagillion-shards.html">海量分片 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="overallocation"></a>分片预分配 (Shard Overallocation)<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/410_Scaling/20_Overallocation.asciidoc">edit</a>
</h2>
</div></div></div>
<p>一个分片存在于单个节点，但一个节点可以持有多个分片。想象一下我们创建拥有两个主分片的索引而不是一个：</p>
<div class="pre_wrapper lang-json">
<pre class="programlisting prettyprint lang-json">PUT /my_index
{
  "settings": {
    "number_of_shards":   2, <a id="CO287-1"></a><i class="conum" data-value="1"></i>
    "number_of_replicas": 0
  }
}</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO287-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>创建拥有两个主分片无副本分片的索引。</p>
</td>
</tr>
</table>
</div>
<p>当只有一个节点时，两个分片都将被分配至相同的节点。
从我们应用程序的角度来看，一切都和之前一样运作着。应用程序和索引进行通讯，而不是分片，现在还是只有一个索引。</p>
<p>这时，我们加入第二个节点，Elasticsearch 会自动将其中一个分片移动至第二个节点，如 <a class="xref" href="overallocation.html#img-two-shard" title="一个拥有两个分片的索引可以利用第二个节点">Figure 50, “一个拥有两个分片的索引可以利用第二个节点”</a> 描绘的那样，
当重新分配完成后，每个分片都可以访问并提供两倍于之前的计算能力。</p>

<div id="img-two-shard" class="imageblock">
<div class="content">
<img src="../images/elas_4402.png" alt="一个拥有两个分片的索引可以利用第二个节点">
</div>
<div class="title">Figure 50. 一个拥有两个分片的索引可以利用第二个节点</div>
</div>
<p>我们已经可以通过简单地将一个分片通过网络复制到一个新的节点来加倍我们的处理能力。
最棒的是，我们零停机地做到了这一点。在分片移动过程中，所有的索引搜索请求均在正常运行。</p>
<p>在 Elasticsearch 中新添加的索引默认被指定了五个主分片。
这意味着我们最多可以将那个索引分散到五个节点上，每个节点一个分片。
它具有很高的处理能力，还未等你去思考这一切就已经做到了！</p>
<div class="sidebar">
<div class="titlepage"><div><div>
<p class="title"><strong>分片分裂 (Shard Splitting)</strong></p>
</div></div></div>
<p>用户经常在问，为什么 Elasticsearch 不支持 <em>分片分裂（shard-splitting）</em>— 将每个分片分裂为两个或更多部分的能力。
原因就是分片分裂是一个糟糕的想法：</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
分裂一个分片几乎等于重新索引你的数据。它是一个比仅仅将分片从一个节点复制到另一个节点更繁重的操作。
</li>
<li class="listitem">
分裂是指数的。起初你你有一个分片，然后分裂为两个，然后四个，八个，十六个，等等。分裂并不会刚好地把你的处理能力提升 50%。
</li>
<li class="listitem">
分片分裂需要你拥有足够的能力支撑另一份索引的拷贝。通常来说，当你意识到你需要扩展时，你已经没有足够的剩余空间来做分裂了。
</li>
</ul>
</div>
<p>Elasticsearch 通过另一种方式来支持分片分裂。你总是可以把你的数据重新索引至一个拥有适当分片个数的新索引（参阅 <a class="xref" href="reindex.html" title="重新索引你的数据">重新索引你的数据</a>）。
和移动分片比起来这依然是一个更加密集的操作，依然需要足够的剩余空间来完成，但至少你可以控制新索引的分片个数了。</p>
</div>
</div>
<div class="navfooter">
<span class="prev">
<a href="shard-scale.html">« 扩容的单元</a>
</span>
<span class="next">
<a href="kagillion-shards.html">海量分片 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>